#ifndef WINDOW_H_INCLUDED
#define WINDOW_H_INCLUDED

#include <SFML/Graphics.hpp>
#include "../System/EventHandling.h"
#include <stack>
#include <my/Config.h>

namespace my {

class GameState;

class MYAPI Window : public sf::RenderWindow, public EventHandling
{
    public:
        /**
        * @brief Window Constructor
        */
        Window(const std::string& title, int width = 800, int height = 600, unsigned long style = sf::Style::Default);

        virtual ~Window();

        void start();

        void pushState(GameState* state);

        void popState();

    private:
        void pop();

        bool                    _aboutToPop;
        std::stack<GameState*>  _states;
};


}

#endif // WINDOW_H_INCLUDED
